def user_info1(name, age, gender):
    print(f'name:{name},age:{age},gender{gender}')


# 位置参数，调用时，参数顺序和个数必须一致
user_info1('tom', 18, 'male')
# 关键字参数，调用时顺序可不一致
user_info1(age=18, name='yh', gender='male')
# 位置与关键字参数混用，位置必须在前面
user_info1('lily', 17, getattr='female')


# 默认参数，定义时 为参数提供默认值
def user_info2(name, age=19, gender='male'):
    print(f'name:{name},age:{age},gender:{gender}')


# 调用时，有默认值的可以传
user_info2('zs')
user_info2('li', 20)


# 可变参数1
# 定义时使用一个*号
def user_info3(*ages):
    print(ages)


# 调用,使用位置参数,返回元组类型
user_info3(3, 5, 7)


# 可变参数2
# 定义时用两个*号
def user_info4(**kwargs):
    print(kwargs)


# 调用时使用关键字参数，返回字典类型
user_info4(name='tom', age=18)
